/**
 * 组队竞赛
 *
 * 牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。
 * 例如:
 * 一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3
 * 一个队伍三个队员的水平值分别是3,2,3.那么队伍的水平值是3
 * 一个队伍三个队员的水平值分别是1,5,2.那么队伍的水平值是2
 * 为了让比赛更有看点,牛牛想安排队伍使所有队伍的水平值总和最大。
 * 如样例所示:
 * 如果牛牛把6个队员划分到两个队伍
 * 如果方案为:
 * team1:{1,2,5}, team2:{5,5,8}, 这时候水平值总和为7.
 * 而如果方案为:
 * team1:{2,5,8}, team2:{1,5,5}, 这时候水平值总和为10.
 * 没有比总和为10更大的方案,所以输出10.
 *
 * 输入描述:
 * 输入的第一行为一个正整数n(1 ≤ n ≤ 10^5)
 *
 * 第二行包括3*n个整数a_i(1 ≤ a_i ≤ 10^9),表示每个参赛选手的水平值.
 *
 * 输出描述:
 * 输出一个整数表示所有队伍的水平值总和最大值.
 */

import java.util.Arrays;
import java.util.Scanner;

/**
 * 这里我们先要将数组排好序, 因为最大的取不了, 所以想要和最大, 肯定是取的第二大的
 * 然后第三大的也是取不了的, 就去第四大的...
 * 这里如果连第二大的页不取的话, 那么就连第二大也失去了, 后面取的还是一样的...
 * 时间复杂度 : O(n * log(n)
 * 空间复杂度 : O(1)
 */

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int n = in.nextInt();

        int[] nums = new int[3 * n];

        for (int i = 0; i < 3 * n; i++) {
            nums[i] = in.nextInt();
        }

        // 数组排序
        Arrays.sort(nums);

        // 总和
        long sum = 0;

        // 总是 取 第二大的
        for (int i = n; i < 3 * n; i += 2) {
            sum += nums[i];
        }

        System.out.println(sum);
    }
}